// 创建 encrypt.js 文件

import CryptoJS from 'crypto-js';

// ------------AES 加密-------------
const aesKey = CryptoJS.enc.Utf8.parse('1011121314151617');
const aesIV = CryptoJS.enc.Utf8.parse('9181716151413121');
function getAesString(data, key, iv) {  // 加密
  let encrypt = CryptoJS.AES.encrypt(data, key, {
    iv: iv,                      // iv偏移量 CBC需加偏移量
    mode: CryptoJS.mode.CBC,      // CBC模式
    // mode: CryptoJS.mode.ECB,   // ECB模式
    padding: CryptoJS.pad.Pkcs7   // padding处理
  });

  // debugger
  return encrypt.toString();      // 加密完成后，转换成字符串
}


// ------------AES 解密-------------
function getDAesString(encrypted, key, iv) { // 解密
  var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  return decrypted.toString(CryptoJS.enc.Utf8);
}

// AES 对称秘钥加密
const aes = {
  aesKey,
  aesIV,
  en: (data) => getAesString(data, aesKey, aesIV),
  de: (data) => getDAesString(data, aesKey, aesIV)
};

export { aes };
